package com.cizzy.user.service;

import com.cizzy.user.common.Result;
import com.cizzy.user.entity.dto.UserDTO;
import com.cizzy.user.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cizzy.user.entity.dto.UserHomeDTO;
import com.cizzy.user.entity.dto.UserInfoDTO;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author crissy-月下闲人
 * @since 2023-10-29
 */
public interface IUserService extends IService<User> {

    /**
     * 通过 id 查询用户
     * @param id 用户ID
     * @return 用户信息
     */

    Result<UserHomeDTO> getUserHomeById(Long id);

    Result<User> getUserById(Long id);

    /**
     * 账户注册
     * @param user 用户信息
     * @return 用户信息
     */
    Result<UserInfoDTO> userRegister(User user);

    /**
     * 账号密码登录
     * @param username 用户名
     * @param password 密码
     * @return 用户信息
     */
    Result<UserInfoDTO> userLogin(String username, String password);

    /**
     * 退出登录
     * @param token 令牌
     * @return 该操作的返回信息
     */
    Result<String> userLogout(String token);

    /**
     * 注销账户
     * @param token 令牌
     * @return 该操作的返回信息
     */
    Result<String> deleteUser(String token);

    Result<String> initUser(String token);

    Result<List<UserDTO>> getUserListByIds(List<Long> userIdList);

    Result<UserInfoDTO> getUserInfoById(Long userId);

    Result<List<Long>> getRandomUserIdList(Integer num);
}
